<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>属性访问器</title>
</head>
<body>
    
</body>
</html>
<script>
    //getter  获取属性  setter设置属性
    //使用这种方式设置值和访问值的目的是为了 
    //用于避免错误的赋值,对赋值规则进行处理
    //属性访问器如果定义的话，就只能使用属性访问器来设置和访问属性
    //属性访问器和普通的属性访问  只能选择一个
    // "use strict";
    // const user = {
    //     data : {name:"后盾人",age:null},
    //     set age(value){
    //         if(typeof value != 'number' || value > 100 || value < 1){
    //             // throw new Error('年龄格式错误');
    //             alert('年龄格式错误');
    //             return false;
    //         }
    //         this.data.age = value;
    //     },
    //     get age(){
    //         return `年龄是：${this.data.age}`;
    //     },
    //     set name(value){
    //         this.data.name = value;
    //     },
    //     get name(){
    //         return this.data.name;
    //     }
    // };
    // user.age = 999;
    // // console.log(user.age)
    // // user.name = 'heyue';
    // console.log(user.name)


    //使用getter设置只读的课程总价

    //伪造属性
    // let Lesson = {
    //     lists : [
    //         {name : "js",price : 100},
    //         {name : "mysql" , price : 212},
    //         {name : "vue.js",price : 98}
    //     ],
    //     get total(){
    //         return this.lists.reduce((a,b) => a + b.price ,0);
    //     }
    // };

    // console.log(Lesson.lists.length);
    // console.log(Lesson.total)


    //批量设置属性
    // const web = {
    //     name : '后盾人',
    //     url : 'houdunren.com',
    //     get site(){
    //         return `${this.name} ${this.url}`;
    //     },
    //     set site(value){
    //         // console.log(value.split(","))
    //         [this.name,this.url] = value.split(",");
    //     }
    // };
    // web.site = "后盾网,hdcms";
    // console.log(web.site)


    //使用token储存 取出的示例 
    // let Request = {
    //     set token(content){
    //         localStorage.setItem('_token',content);
    //     },
    //     get token(){
    //         let content = localStorage.getItem('_token');
    //         if(!content){
    //             alert('请登录后获取token');
    //             return false;
    //         }else{
    //             return content;
    //         }
    //     }
    // };

    // //模拟登录
    // //登录成功
    // Request.token = 'asassdffdsgdfgdfgdfgfdgfdg';
    // //获取token的值用作验证
    // console.log(Request.token);
    // //将token令牌显示在页面上
    // document.body.innerHTML = Request.token;

    //定义内部私有属性
    //使用Symbol 定义属性的时候  永远是不会重复的
    // const DATA = Symbol();
    // const user = {
    //     [DATA] : {
    //         name : null
    //     },
    //     get name(){
    //         return this[DATA].name;
    //     },
    //     set name(value){
    //         if(value.length <= 3){
    //             throw new Error("用户名不能小于三位");
    //         }
    //         this[DATA].name = value;
    //     }
    // };
    // user.name = "后盾人教程1212";
    // // user[DATA].name = 'hdcmsssss';
    // console.log(user);

    














</script>